#include "ljjz.h"
/**
 * 建立图的邻接矩阵矩阵存储结构
 * @param {Mgraph}  *g      图指针
 * @param {char}    *s      顶点信息
 * @param {int}     *c      权值
 */
void creat(Mgraph *g, char *s, int *c)
{
    int i, j, k, w;
    FILE *rf;
    // 从文件读取图的边信息
    rf = fopen(s, "r");

    if (rf)
    {
        fscanf(rf, "%d%d", &g->n, &g->e);

        // 读取顶点信息
        for (i = 0; i < g->n; i++)
        {
            fscanf(rf, "%ls", &g->vexs[i]);
        }

        // 初始化邻接矩阵
        for (i = 0; i < g->n; i++)
        {
            for (j = 0; j < g->n; j++)
            {
                if (i == j)
                {
                    g->edges[i][j] = 0;
                }
                else
                {
                    g->edges[i][j] = FINITY;
                }
            }
        }

        // 读取边信息
        for (k = 0; k < g->e; k++)
        {
            fscanf(rf, "%d%d%d", &i, &j, &w);
            g->edges[i][j] = w;
            if (c == 0)
            {
                g->edges[j][i] = w;
            }
        }
        fclose(rf);
    }
    else
    {
        g->n = 0;
        printf("文件打开失败！");
    }
}

int main()
{
    Mgraph g;
    int i, j;
    int c[M] = {0};
    char s[20] = "ljjz.txt";
    creat(&g, s, c);
    printf("顶点数：%d\n", g.n);
    printf("边数：%d\n", g.e);
    printf("顶点信息：");
    for (i = 0; i < g.n; i++)
    {
        printf("%c ", g.vexs[i]);
    }
    printf("\n邻接矩阵：\n");
    for (i = 0; i < g.n; i++)
    {
        for (j = 0; j < g.n; j++)
        {
            printf("%d ", g.edges[i][j]);
        }
        printf("\n");
    }
    return 0;
}